﻿using System;
using System.Linq;
using System.Collections.Generic;
using SIM.Geo.DA;
using SIM.Geo.BE;

namespace SIM.Geo.BL
{
    public class BLProductosPerforacion
    {
        #region Metodos
        /// <summary>
        /// Método que devuelve la lista de ProductosPerforacion
        /// </summary>
        /// <returns></returns>
        public List<ProductosPerforacion> ListarProductosPerforacion()
        {
            return Accesor.ListarProductosPerforacion();
        }
        /// <summary>
        /// Método para insertar una ProductosPerforacion
        /// </summary>
        /// <param name="productosPerforacion"></param>
        /// <returns></returns>
        public int InsertarProductosPerforacion(ProductosPerforacion productosPerforacion)
        {
            return Accesor.InsertarProductosPerforacion(productosPerforacion);
        }
        /// <summary>
        /// Método para modificar un ProductosPerforacion
        /// </summary>
        /// <param name="ProductosPerforacion"></param>
        public void ModificarProductosPerforacion(ProductosPerforacion productosPerforacion)
        {
            Accesor.ModificarProductosPerforacion(productosPerforacion);
        }
        /// <summary>
        /// Método para eliminar ProductosPerforacion
        /// </summary>
        /// <param name="ProductosPerforacion"></param>
        public void EliminarProductosPerforacion(int codigoProductosPerforacion)
        {
            var productosPerforacion = Accesor.ObtenerProductosPerforacion(codigoProductosPerforacion);
            Accesor.EliminarProductosPerforacion(productosPerforacion);
        }
        /// <summary>
        /// Método que busca por nombre ProductosPerforacion
        /// </summary>
        /// <param name="nombre"></param>
        /// <returns></returns>
        public List<ProductosPerforacion> BuscarProductosPerforacion(string descripcion)
        {
            return Accesor.BuscarProductosPerforacion(descripcion);
        }
        /// <summary>
        /// Método que devuelve ProductosPerforacion por codigo
        /// </summary>
        /// <param name="codigoProductosPerforacion"></param>
        /// <returns></returns>
        public ProductosPerforacion ObtenerProductosPerforacion(int codigoProductosPerforacion)
        {
            return Accesor.ObtenerProductosPerforacion(codigoProductosPerforacion);
        }
        /// <summary>
        /// Método que devuelve ProductosPerforacion por tipo de producto
        /// </summary>
        /// <param name="codigoProductosPerforacion"></param>
        /// <returns></returns>
        public List<ProductosPerforacion> ListarProductosPerforacionPorTipoProducto(int codigoTipoProoducto)
        {
            return Accesor.ListarProductosPerforacionPorTipoProducto(codigoTipoProoducto);
        }
        /// <summary>
        /// Devuelve la lista para ComboBox, DropdownList, devuelve campos Value y Text
        /// </summary>
        /// <returns></returns>
        public List<ListItemInt> ObtenerListItem()
        {

            var result = Accesor.ListarProductosPerforacion();
            return result
                .Select(x => new ListItemInt { Value = x.CodigoProducto, Text = x.Descripcion }).OrderBy(x => x.Text).ToList();

        }
        /// <summary>
        /// Devuelve la lista para ComboBox, DropdownList, devuelve campos Value y Text
        /// </summary>
        /// <returns></returns>
        public List<ListItemInt> ObtenerListItem1(int codigoTipoProoducto)
        {

            var result = Accesor.ListarProductosPerforacionPorTipoProducto(codigoTipoProoducto);
            return result
                .Select(x => new ListItemInt { Value = x.CodigoProducto, Text = x.Descripcion }).OrderBy(x => x.Text).ToList();

        }
        /// <summary>
        /// Devuelve la lista para ComboBox, DropdownList, devuelve campos Value y Text
        /// </summary>
        /// <returns></returns>
        public List<ListItemInt> ObtenerListItem2(int codigoTipoProoducto)
        {

            var result = Accesor.ListarProductosPerforacionPorTipoProducto(codigoTipoProoducto);
            return result
                .Select(x => new ListItemInt { Value = x.CodigoProducto, Text = x.Descripcion + " (" + x.UnidadMedida + ")" }).OrderBy(x => x.Text).ToList();

        }
        #endregion

        #region Accesor
        private static DAProductosPerforacion Accesor
        {
            [System.Diagnostics.DebuggerStepThrough]
            get { return new DAProductosPerforacion(); }
        }
        #endregion
    }
}
